有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法从com类的本机(方法、对象)获取静态方法。太阳jna。出生地的

我正在使用JNA的com.sun.jna.NativeLibrary类来加载VLCJ本机库。我正在做一个armv8(aarch x64)-based linux device。下面是我的代码,请注意,我使用的是最新的JNA版本jna-4.5.2

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), Constants.DEPLIB_OUTPUT_DIRECTORY);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
LibXUtil.initialise();

首先我遇到了这个错误:

java.lang.UnsatisfiedLinkError: JNA native support (com/sun/jna/linux-aarch64/libjnidispatch.so) not found in resource path

快速搜索后,我发现我必须将jna本机lib目录从jar内部复制到jvm lib路径中,其中jna jar库为几乎所有已知系统预构建了库,如下图所示:

jna-4.5.2 internal content.jpeg

之后,上述异常消失,但出现了另一个异常:

java.lang.UnsatisfiedLinkError: Can't obtain static method fromNative(Method, Object) from class com.sun.jna.Native

异常是在类com中找不到来自native(method,Object)的方法。太阳jna。Native但是在反编译这个类之后,我发现这个方法已经存在

我没有主意了,知道吗,任何帮助都将受到高度赞赏,谢谢


共 (1) 个答案

  1. # 1 楼答案

    通过以下方式解决:

    1. 撤消此步骤:

    After a quick search i found that i must copy the jna native lib directory from inside the jar into the jvm lib path...

    1. 从我的项目中删除所有jna模块(jar)
    2. 下载以下JAR并将其链接到我的项目中: ^{} ^{} ^{}